home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PRUS101 / FSWAP.DOC < prev    next >
Text File  |  1995-01-15  |  8KB  |  186 lines

  1.  
  2.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  3.                        Dokumentation zur FIDO Unit FSWAP
  4.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  5.  
  6.                                  RELEASE 1.01
  7.                                  ^^^^^^^^^^^^
  8.  
  9.   =========================================================================
  10.   Autor: Peter Holschbach, 2:2450/660.3 @ FidoNet, Remscheid, 01.09.1994
  11.   =========================================================================
  12.  
  13.      1. Swap :
  14.      -----------
  15.         Die Unit FSWAP.PAS stellt eine Funktion zur Verfügung, mit der
  16.         das aktuelle Pascalprogramm auf die Festplatte, ins XMS oder
  17.         EMS ausgelagert werden kann und eine DOS-Shell oder ein anders
  18.         Programm aufgerufen werden kann.
  19.         Dies ist eine Low Level Unit.  Sie benötigt keinerlei Routinen
  20.         anderer  Units,  mit  Ausnahme  der in Turbo Pascals (6.0 oder
  21.         höher) Unit-Library TURBO.TPL enhaltenen Standard-Units.
  22.  
  23.      2. Kurzbeschreibung:
  24.      --------------------
  25.         DosRetValue .......... in dieser Variablen wird der Rückkabewert
  26.                                des aufgerufenen DOS-Programms abgelegt.
  27.         ExecSwap ............. führt die Auslagerung durch und ruft
  28.                                das externe Programm auf.
  29.         SwapError ............ die Fehlernummer die beim letzten Versuch
  30.                                aufgetreten ist.
  31.         SwapFilePath ......... Pfadangabe für die Auslagerungsdatei, wenn
  32.                                auf Platte ausgelagert wird.
  33.         TSwapMem ............. Typ für die verschiedenen Auslagerungs-
  34.                                varianten (DISK,EMS,XMS,Keine)
  35.         TSwapMemSelect ....... in diesem Feld wird abgelegt, in welcher
  36.                                Reihenfolge die verschiedenen Auslagerungs-
  37.                                medien abgesucht werden sollen.
  38.  
  39.         3. Detaillierte Beschreibung:
  40.         -----------------------------
  41.  
  42.         ===============================================================
  43.         ExecSwap
  44.         ---------------------------------------------------------------
  45.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  46.  
  47.         ERSTDATUM    ...  01.09.1994    LETZTE ÄNDERUNG ...
  48.  
  49.         MODIFIKATION ...
  50.         ---------------------------------------------------------------
  51.  
  52.         BESCHREIBUNG ...  Auslagerung / Aufruf / "Einlagerung"
  53.  
  54.         DEKLARATION  ...  ExecSwap (LastAdr : Pointer;
  55.                                     WhereToSwap : TSwapMemSelect;
  56.                                     ProgName,Parameters : String): Boolean;
  57.  
  58.         PARAMETER    ...  LastAdr     = letzte Adresse die gesichert
  59.                                         werden soll.
  60.                           WhereToSwap = Feld mit den gewünschten
  61.                                         Auslagerungsmedien
  62.                           ProgName    = Name des Programms daß ausgeführt
  63.                                         werden soll.
  64.                           Parameters  = die Parameterzeile die dem
  65.                                         Programm übergeben werden soll.
  66.  
  67.         ERGEBNIS     ...  eine Variable des Typs BOOLEAN, die TRUE enthält,
  68.                           wenn der Aufruf funktioniert hat.
  69.                           Wird False zurückgeliefert, so kann in der
  70.                           globalen Variablen SwapError eine Fehlernummer
  71.                           abgefragt werden.
  72.  
  73.         4. Beispiele:
  74.         -------------
  75.         ===============================================================
  76.         ExecSwap
  77.         ---------------------------------------------------------------
  78.  
  79.         Da ein Beispiel mehr als 1000 Worte sagt:
  80.  
  81.         ;---------------------------------------
  82.         Uses FSWAP;
  83.  
  84.         Var SwapField : TSwapMemSelect;
  85.  
  86.         Begin
  87.           SwapField [1] := EMS;
  88.           SwapField [2] := XMS;
  89.           SwapField [3] := DISK;
  90.           SwapFilePath := 'D:\';
  91.           Writeln (ExecSwap (HeapEnd,SwapField,'C:\DOS\COMMAND.COM',''));
  92.         End.
  93.         ;---------------------------------------
  94.  
  95.         An dieser Stelle kommen die 1000 Worte:
  96.  
  97.         Der von FSWAP benötigte Speicher hängt von der Art der
  98.         Einbindung ab. Um möglichst wenig zu verbrauchen, muß
  99.         die Unit immer an letzter Stelle eingebunden werden.
  100.         (Natürlich im Hauptprogramm !)
  101.         Pascal plaziert die Units immer in umgekehrter Reihenfolge
  102.         ihrer Benennung im Speicher.
  103.         Derzeit belegt das gezeigte Beispiel ca. 2,5KB im RAM, wobei
  104.         weitere 4KB für die Kopie von COMMAND.COM verlohren gehen.
  105.  
  106.         Die Variable HeapEnd gibt in TP7 die letzte von Pascal belegte
  107.         Speicheradresse an. Hier kann auch jede andere Adresse stehen.
  108.         Verwendet man aber eine Adresse unterhalb dieser Marke, muß
  109.         sichergestellt sein, daß der darüberliegende Speicher unbenutzt
  110.         ist. ExecSwap gibt nämlich immer den gesamten Speicher frei.
  111.  
  112.         Das Feld vom Typ "TSwapMemSelect" enthält die Medien, die für
  113.         die Auslagerung verwendet werden sollen. Gleichzeitig dient es
  114.         zur festlegung der Priorität (1=höchste, 2=mittlere, 3=niedrige).
  115.         Soll nur auf EMS zugegriffen werden so würde das Programm wie
  116.         folgt aussehen:
  117.  
  118.         ;---------------------------------------
  119.         Uses FSWAP;
  120.  
  121.         Var SwapField : TSwapMemSelect;
  122.  
  123.         Begin
  124.           SwapField [1] := EMS;
  125.           SwapField [2] := None;
  126.           SwapField [3] := None;
  127.           SwapFilePath := 'D:\';
  128.           Writeln (ExecSwap (HeapEnd,SwapField,'C:\DOS\COMMAND.COM',''));
  129.         End.
  130.         ;---------------------------------------
  131.  
  132.         Der Eintrag "None" bedeutet, daß an dieser Stelle kein Versuch
  133.         der Auslagerung unternommen werden soll.
  134.  
  135.         In "ProgName" muß der Programmname übergeben werden. Der Anwender
  136.         muß selbst sicherstellen daß diese Programm existiert und unter
  137.         dem übergebenen Pfadnamen erreichbar ist. PATH wird von ExecSwap
  138.         nicht abgesucht!
  139.  
  140.         In 'Parameters' kann man alle Kommandozeilenparameter übergeben,
  141.         die das Programm benötigt. Die Anzahl der übergebenen Zeichen ist
  142.         durch DOS auf 127 eingeschränkt!
  143.  
  144.         Tritt beim Swapout ein Fehler auf, so kann die Variable SWAPERROR
  145.         abgefragt werden.
  146.  
  147.         1   = XMS oder EMS nicht vorhanden
  148.         2   = Angabe des Speicherendes ist fehlerhaft
  149.         3   = nicht genügend Platz in EMS/DISK/XMS
  150.         4   = Fehler bei der Ermittlung des freien
  151.               Plattenspeichers
  152.         5   = Fehler bei Erzeugung einer temporären Datei
  153.         6   = Fehler beim Schreibzugriff auf die Datei
  154.         7   = Fehler beim Lesen der Datei
  155.         8   = Fehler bei der Ermittlung des zu sichernden
  156.               Speicherraums
  157.         9   = Fehler beim Allocieren des Speichers /EMS/DISK/XMS)
  158.        10   = Fehler bei der Auslagerung des RAM
  159.  
  160.        Bei einigen Fehlern wird das MSB auf einen bestimmten
  161.        Wert gesetzt und im LSB eine Meldung für das entsprechende
  162.        Medium ausgegeben:
  163.  
  164.        11   =  Fehler bei der Speicherreduktion
  165.       255   =  Fehler vom EMS/XMS-Manager
  166.  
  167.         5. History:
  168.         -----------
  169.  
  170.  
  171.  
  172.         Neuerungen nach Release ...
  173.         ---------------------------
  174.           ==========================================================================
  175.  
  176.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  177.                    Ende der Dokumentation zur FIDO Unit FSWAP
  178.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.